mult_qr Interface

public interface mult_qr

Module Procedures

private pure function mult_qr_mtx(lside, trans, a, tau, c) result(qc)

Multiplies a general matrix by the orthogonal matrix from a QR factorization such that or .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to apply or from the left; else, set to false to apply or from the right.

logical, intent(in) :: trans

Set to true to apply ; else, set to false to apply .

real(kind=real64), intent(in), dimension(:,:) :: a

On input, an LDA-by-K matrix containing the elementary reflectors output from the QR factorization. If lside is set to true, LDA = M, and M >= K >= 0; else, if lside is set to false, LDA = N, and N >= K >= 0.

real(kind=real64), intent(in), dimension(:) :: tau

A K-element array containing the scalar factors of each elementary reflector defined in.

real(kind=real64), intent(in), dimension(:,:) :: c

The M-by-N matrix .

Return Value real(kind=real64), allocatable, dimension(:,:)

The M-by-N product of and .

private pure function mult_qr_mtx_cmplx(lside, trans, a, tau, c) result(qc)

Multiplies a general matrix by the orthogonal matrix from a QR factorization such that or .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to apply or from the left; else, set to false to apply or from the right.

logical, intent(in) :: trans

Set to true to apply ; else, set to false to apply .

complex(kind=real64), intent(in), dimension(:,:) :: a

On input, an LDA-by-K matrix containing the elementary reflectors output from the QR factorization. If lside is set to true, LDA = M, and M >= K >= 0; else, if lside is set to false, LDA = N, and N >= K >= 0.

complex(kind=real64), intent(in), dimension(:) :: tau

A K-element array containing the scalar factors of each elementary reflector defined in.

complex(kind=real64), intent(in), dimension(:,:) :: c

The M-by-N matrix .

Return Value complex(kind=real64), allocatable, dimension(:,:)

The M-by-N product of and .

private pure function mult_qr_vec(trans, a, tau, c) result(qc)

Multiplies a vector by the orthogonal matrix from a QR factorization such that .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

Set to true to apply ; else, set to false to apply .

real(kind=real64), intent(in), dimension(:,:) :: a

On input, an M-by-K matrix containing the elementary reflectors output from the QR factorization.

real(kind=real64), intent(in), dimension(:) :: tau

A K-element array containing the scalar factors of each elementary reflector defined in.

real(kind=real64), intent(in), dimension(:) :: c

The M-element vector .

Return Value real(kind=real64), allocatable, dimension(:)

The product of the orthogonal matrix and the original vector .

private pure function mult_qr_vec_cmplx(trans, a, tau, c) result(qc)

Multiplies a vector by the orthogonal matrix from a QR factorization such that .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

Set to true to apply ; else, set to false to apply .

complex(kind=real64), intent(in), dimension(:,:) :: a

On input, an M-by-K matrix containing the elementary reflectors output from the QR factorization. Notice, the contents of this matrix are restored on exit.

complex(kind=real64), intent(in), dimension(:) :: tau

A K-element array containing the scalar factors of each elementary reflector defined in.

complex(kind=real64), intent(in), dimension(:) :: c

The M-element vector .

Return Value complex(kind=real64), allocatable, dimension(:)

The product of the orthogonal matrix and the original vector .